// token无效
const { handleInvalid } = require("./sub/tokenInvalid");
// token错误
const { handleError } = require("./sub/tokenError");
// token加载
const { handleLoading } = require("./sub/tokenLoading");
// token校验
const { handleCheck } = require("./sub/tokenCheck");

const { TokenStatus } = require("../../../constEnum");
const { BaseErr } = require("utils");

// 处理状态
async function handleTokenStatus(status, doc) {
    // token 失败
    if (status === TokenStatus.error) {
        return await handleError();
    }

    if (status === TokenStatus.loading) {
        let docId = doc._id;
        // 已经加载中
        return await handleLoading(docId);
    }
    if (status === TokenStatus.invalid) {
        // 无效
        return await handleInvalid(doc);
    }

    if (status === TokenStatus.valid) {
        // 有效的, 要检查 是否过期了
        return await handleCheck(doc);
    }
    return [new BaseErr(-4002, "token类型错误"), null];
}

module.exports = {
    handleTokenStatus,
};
